package Model;

import java.io.Serializable;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import java.util.Date;


@Entity
@Table(name = "contaReceberAssociado")
@SuppressWarnings("serial")
public class ContaReceberAssociado implements Serializable {

   @Id
   @SequenceGenerator( name = "cod_conta_receber_associado", sequenceName = "cod_conta_receber_associado_seq", allocationSize = 1 )
   @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "cod_conta_receber_associado" )
   @Column (name = "cod_conta_receber_associado")
   private int codReceberAssociado;

   @ManyToOne(fetch = FetchType.EAGER)
   @Fetch(FetchMode.SELECT)
   @Cascade(CascadeType.LOCK)
   @JoinColumn(name = "cod_associado")
   private Associado associado;

   @Column (name = "descricao")
   private  String  descricao;

   @Temporal(TemporalType.DATE)
   @Column(name = "data_despesa")
   private Date dataDespesa;
 
   @Column (name = "valor_total")
   private  double  valorTotal;

   @Column (name = "valor_pago")
   private  double  valorPago;

   @Column (name = "forma_pagamento")
   private  int  formaPagamento;


   //Construtores
   //Construtor padrao
   public ContaReceberAssociado() {
      this.codReceberAssociado = 0;
      this.associado = new Associado();
      this.descricao = "";
      this.dataDespesa = new Date();
      this.valorTotal=0;
      this.valorPago=0;
      this.formaPagamento=0;
   }

   public ContaReceberAssociado(int codReceberAssociado, Associado associado, String descricao, Date dataDespesa, int formaPagamento, double valorTotal, double valorPago){
       this.codReceberAssociado = codReceberAssociado;
       this.associado = associado;
       this.descricao = descricao;
       this.dataDespesa = dataDespesa;
       this.valorTotal = valorTotal;
       this.valorPago = valorPago;
       this.formaPagamento = formaPagamento;
   }

    //Metodos get e set
    public int getCodReceberAssociado() {
        return codReceberAssociado;
    }
    public void setCodReceberAssociado(int codReceberAssociado) {
        this.codReceberAssociado = codReceberAssociado;
    }

    public Associado getAssociado() {
        return associado;
    }
    public void setAssociado(Associado associado) {
        this.associado = associado;
    }

    public String getDescricao() {
        return descricao;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Date getDataDespesa() {
        return dataDespesa;
    }
    public void setDataDespesa(Date dataDespesa) {
        this.dataDespesa = dataDespesa;
    }

    public double getValorTotal() {
        return valorTotal;
    }
    public void setValorTotal(double valorTotal) {
        this.valorTotal = valorTotal;
    }

    public double getValorPago() {
        return valorPago;
    }
    public void setValorPago(double valorPago) {
        this.valorPago = valorPago;
    }

    public int getFormaPagamento() {
        return formaPagamento;
    }
    public void setFormaPagamento(int formaPagamento) {
        this.formaPagamento = formaPagamento;
    }
}